登入 Heroku 後,在 dashboard 上點選 Resources 頁面,就會看到 Add-ons 的搜尋欄位。
許多部落格的安裝教學會推薦安裝 Redis To Go,但如果你發現背景任務一直卡在 佇列 queue 不動,也許你的 sidekiq 跟 redis server 有版本不符的問題。
在終端機輸入 heroku logs -t 尋找是否有錯誤
可以看出因為版本太舊, Redis To Go 不能用了。解決辦法是必須換成 Heroku Redis,因為 Heroku Redis 目前提供的預設版本是 Redis 5.0,符合目前 Sidekiq 的要求。
從 gandi 取得 SMTP 以及帳號、密碼資訊之後,再修改 production.rb 的設定檔,便可以利用 gandi 的 SMTP 伺服器寄信。 當然帳號及密碼都是需要利用環境變數存放,可以試試 figaro 來設定你自己的環境變數。
config.action_mailer.default_url_options = { host: 'http://localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: ENV['smtp_address'],
port: 587,
domain: 'postmaster@chienhao.tw',
user_name: ENV['smtp_username'],
password: ENV['smtp_password'],
authentication: 'plain',
enable_starttls_auto: true
}
在 dashboard 上點選 Settings 頁面,再點選 Reveal Config Vars 。接著我們需要把 SMTP address以及帳號、密碼資訊新增到 Heroku 如下圖。
在 rails root 建立 Procfile 及輸入以下指令
# root
bundle exec sidekiq -q default -q mailers
“ Heroku apps include a Procfile that specifies the commands that are executed by the app on startup. You can use a Procfile to declare a variety of process types, including: ” 截自 Heroku Dev Center
完成以上三個步驟就大功告成了!
mperham/sidekiq
Rails background workers
用 Sidekiq 處理 Background Job
#366 Sidekiq